package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.model.product.BaseTrademark;
import com.atguigu.gmall.product.service.BaseTrademarkService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author mqx
 * @date 2020-7-25 14:26:12
 */
@RestController
@RequestMapping("admin/product/baseTrademark")
public class BaseTrademarkController {

    @Autowired
    private BaseTrademarkService baseTrademarkService;

    // http://api.gmall.com/admin/product/baseTrademark/{page}/{limit} 查询方法
    @GetMapping("{page}/{limit}")
    public Result getBaseTrademarkList(@PathVariable Long page,
                                       @PathVariable Long limit){

        // 创建Page 对象
        Page<BaseTrademark> baseTrademarkPage = new Page<>(page, limit);
        IPage<BaseTrademark> baseTrademarkList = baseTrademarkService.getBaseTrademarkList(baseTrademarkPage);
        // 返回数据即可！
        return Result.ok(baseTrademarkList);
    }

    // http://api.gmall.com/admin/product/baseTrademark/save
    // 前台传递的Json 字符串 {tmName: "锤子。", logoUrl: "/static/default.jpg"}
    @PostMapping("save")
    public Result save(@RequestBody BaseTrademark baseTrademark){
        // 调用服务层方法。
        baseTrademarkService.save(baseTrademark);

        return Result.ok();
    }

    // 修改之前 ，获取当前修改的数据
    // http://api.gmall.com/admin/product/baseTrademark/get/{id}
    @GetMapping("get/{id}")
    public Result getBaseTrademarkById(@PathVariable Long id){
        BaseTrademark baseTrademark = baseTrademarkService.getById(id);
        return Result.ok(baseTrademark);
    }

    // http://api.gmall.com/admin/product/baseTrademark/update
    @PutMapping("update")
    public Result update(@RequestBody BaseTrademark baseTrademark){
        // 将对应的修改完成之后的数据保存
        baseTrademarkService.updateById(baseTrademark);

        return Result.ok();
    }

    // http://api.gmall.com/admin/product/baseTrademark/remove/{id}
    @DeleteMapping("remove/{id}")
    public Result remove(@PathVariable Long id){
        // 根据Id 删除品牌
        baseTrademarkService.removeById(id);
        return Result.ok();
    }

    // http://api.gmall.com/admin/product/baseTrademark/getTrademarkList
    @GetMapping("getTrademarkList")
    public Result getTrademarkList(){
        // 这个是我们自己写的接口，接口自定义了一个查询方法。
        // List<BaseTrademark> trademarkList = baseTrademarkService.getTrademarkList();
        // IService 中内部有查询所有的方法list。由观看源码得知，list方法底层还是调用的baseMapper.selectList(queryWrapper);
        List<BaseTrademark> trademarkList = baseTrademarkService.list(null);
        return Result.ok(trademarkList);
    }

}
